/*
 * TMap Designer - A Thematic Map design software
 * Copyright (C) 2006 World Health Organization
 * http://www.who.int
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package who.tmap.toolkit.cdr.impl;

public class CDRPSHelper {
	
	private double minVal, maxVal, mapFactor;
	
	public CDRPSHelper() {
	}
	
	public double getMapFactor() {
		return mapFactor;
	}

	public void setMapFactor(double mapFactor) {
		this.mapFactor = mapFactor;
	}

	public double getMaxVal() {
		return maxVal;
	}

	public void setMaxVal(double maxVal) {
		this.maxVal = maxVal;
	}

	public double getMinVal() {
		return minVal;
	}

	public void setMinVal(double minVal) {
		this.minVal = minVal;
	}

	/**
	 * radius of circle = ((data value)/(maximum data value))^0.57 x radius of maximum circle to be drawn.
	 *
	 * Source: Dent, Borden D. Cartography: Thematic Map Design, 2d edi.Wm. .C. Brown, Publishers, 1990.
	 * @param mapShape
	 * @param scalingFactor
	 * @return
	 */
	public double computeSymbolSize( double val, int scalingFactor ) {
		double sfSize =0, size =0, sizePC =0;

		if ( val != java.lang.Double.MIN_VALUE ) {

			if ( maxVal != 0 ) {
				sizePC =Math.pow( val/maxVal, 0.57 );
			} else {
				sizePC =0;
			}
			
			if ( sizePC != 0 ) {
				size=((double)scalingFactor*sizePC)/mapFactor;				
			} else {
				size =0;
			}			
			
			sfSize =Math.abs( size );
		} 
		
		return sfSize;
	}
}
